/*
 * Usuario.cpp
 *
 *  Created on: 07/10/2013
 *      Author: santiago
 */

#include "Usuario.h"

Usuario::Usuario() : Registro(-1) {
	this->tipo = 'U';
}

Usuario::Usuario(int dni) : Registro(dni) {
	this->tipo = 'U';
}

Usuario::Usuario(int dni, string nombre, string apellido, char tipo) : Registro(dni) {
	this->nombre = nombre;
	this->apellido = apellido;
	this->tipo = tipo;
}

Usuario::~Usuario() {
}

void Usuario::serializar() {
	//(*this) << dni;  // no se debe guardar el ID del registro explicitamente ya que se hace automáticamente
	(*this) << nombre;
	(*this) << apellido;
	(*this) << (int) emails.size();
	for(int i=0; i < (int) emails.size(); i++)
		(*this) << emails[i];
	(*this) << password;
	(*this) << provincia;
	(*this) << tipo;
}

void Usuario::deserializar() {
	int cantMails;
	emails.clear();

	(*this) >> nombre;
	(*this) >> apellido;
	(*this) >> cantMails;
	for(; cantMails > 0; cantMails--) {
		string email;
		(*this) >> email;
		emails.push_back(email);
	}
	(*this) >> password;
	(*this) >> provincia;
	(*this) >> tipo;
}

/********************************* getters *********************************/

std::string Usuario::getNombre() {
	return nombre;
}

std::string Usuario::getApellido() {
	return apellido;
}

string Usuario::getEmail(unsigned int nroMail) {
	if(nroMail < emails.size())
		return emails[nroMail];
	return "";
}

std::string Usuario::getPassword() {
	return password;
}

std::string Usuario::getProvincia() {
	return provincia;
}

char Usuario::getTipo() {
	return tipo;
}

/********************************* setters *********************************/

void Usuario::setNombre(string nombre) {
	this->nombre = nombre;
}

void Usuario::setApellido(string apellido) {
	this->apellido = apellido;
}

void Usuario::setEmail(unsigned int nroMail, string email) {
	if(nroMail < emails.size())
		emails[nroMail] = email;
	else
		addEmail(email);
}

void Usuario::addEmail(string email) {
	emails.push_back(email);
}

void Usuario::setPassword(string password) {
	this->password = password;
}

void Usuario::setProvincia(string provincia) {
	this->provincia = provincia;
}

void Usuario::setTipo(char tipo) {
	this->tipo = tipo;
}
